﻿using System.Collections.Generic;
using MIAP.Entidades;

namespace MIAP.DataAccess.Interfaces
{
    /// <summary>
    /// Contrato del DAO de procesos de autenticación.
    /// </summary>
    public interface IAutenticacionDao
    {
        /// <summary>
        /// Comprueba si la credencial de usuario especificada existe.
        /// </summary>
        /// <param name="nombreUsuario">Nombre de usuario de la credencial.</param>
        /// <returns>True si la credencial de usuario existe.</returns>
        bool ExiststeCredencial(string nombreUsuario);

        /// <summary>
        /// Obtiene el resumen del usuario asociado a la credencial de usuario específicada.
        /// </summary>
        /// <param name="nombreUsuario">Nombre de usuario de la credencial.</param>
        /// <returns>Una entidad tipo 'UsuarioInfo' conteniendo el resumen del usuario.</returns>
        UsuarioInfo GetUsuarioCredencial(string nombreUsuario);

        /// <summary>
        /// Obtiene el listado de permisos asociados al usuario específicado.
        /// </summary>
        /// <param name="idUsuario">Es el usuario para el cual se buscarán los permisos.</param>
        /// <returns>Lista de permisos del usuario.</returns>
        List<PermisoInfo> GetPermisosUsuario(int idUsuario);

        /// <summary>
        /// Obtiene el listado de perfiles asociados al usuario especificado.
        /// </summary>
        /// <param name="idUsuario">Id del usuario apartir del cual se desea obtener los permisos.</param>
        /// <returns>Una lista deperfiles a los que puede estar asociado el usuario</returns>
        IList<PerfilInfo> GetPerfiles(int idUsuario);
    }
}
